The present invention relates generally to error-correction coding and, more particularly, to a decoder for parallel convolutional codes, i.e., turbo codes.
A new class of forward error control codes, referred to as turbo codes, offers significant coding gain for power limited communication channels. Turbo codes are generated using two or more recursive systematic encoders operating on different orderings of the same information bits. A subset of the code bits generated by each encoder is transmitted in order to maintain bandwidth efficiency. Turbo decoding involves an iterative algorithm in which probability estimates of the information bits that are calculated for one of the received component code words are fed back to a probability estimator comprising the decoder component code words for the other component code words. Each iteration of decoder processing generally increases the reliability of these probability estimates. This process continues, cyclically decoding the component code words until the probability estimates can be used to make reliable decisions.
The maximum a posteriori (MAP) type algorithm introduced by Bahl, Cocke, Jelinek, and Raviv in xe2x80x9cOptimal Decoding of Linear Codes for Minimizing Symbol Error Ratexe2x80x9d, IEEE Transactions on Information Theory, Mar. 1974, pp. 284-287, is particularly useful as a component decoder in decoding parallel concatenated convolutional codes, i.e., turbo codes. The MAP algorithm is used in the turbo decoder to generate a posteriori probability estimates of the information bits that have been encoded into the code word. These probability estimates are used as a priori bit probabilities for the second MAP decoder. Three fundamental terms in the MAP algorithm are the forward and backward state probability functions (the alpha and beta functions, respectively) and the a posteriori transition probabilities (the sigma functions).
A known characteristic of turbo codes is that their error correction capability increases with code word length. However, there is some practical limit on the length of a code word that can be decoded with a MAP-algorithm decoder implementation. Accordingly, it is desirable to provide a modular turbo decoder structure capable of decoding longer code word lengths. It is furthermore desirable to provide such a turbo decoder while increasing coding gain and data rate.
A turbo decoder system utilizing a MAP decoding algorithm comprises a predetermined number M of turbo decoder modules for decoding segments of a turbo code component code word in parallel, thereby expanding the block-length and data rate capability of the turbo decoder system. In an exemplary system, each turbo decoder module has a predetermined maximum code-word size corresponding to N information bits and a predetermined maximum decoding rate. For the first half iteration of the MAP decoding algorithm, the inputted turbo code word (corresponding to Mxc2x7N information bits) is divided into M segments, and turbo decoding of these segments is done in parallel by the turbo decoders. The resulting a posteriori bit probability signals are provided to an interleaver/de-interleaver-and-convert-data (ICD) block wherein they are re-ordered according to the interleaver definition thereof. After interleaving, the a posteriori bit probabilities are used to modify the values of received data samples. Following modification of the received data sample values, the modified data samples are segmented and provided as input data samples corresponding to the bottom component code word for the second half iteration of the MAP decoding algorithm. At the end of the second half iteration, the output a posteriori bit probabilities are provided by the component code word decoder to the ICD block and re-ordered according to the de-interleaver definition therein. After de-interleaving, the fed back a posteriori bit probabilities are used to modify the values of received data samples to be used in the subsequent decoding half iteration. Decoding continues in this manner until a predetermined number of half iterations are performed, and data decisions are made on the final a posteriori estimates.